﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Licenciamiento;
using EntGuayasSLA.BL.Listas;
using Ext.Net;
using EntGuayasSLA.BL.Listas.Criterias;

namespace EGuayas.Web.Usuario
{
    public partial class wucPersona : ucWuc
    {
        protected String IdPageSession
        {
            get
            {
              
                return ReadCustomConfigPage(this.frmPersona, this.ID);
            }

        }
        /// <summary>
        /// Id de persona creada y/o modificada
        /// </summary>
        protected string PersonaIdTmp
        {
            get
            {
               
                return ReadCustomConfig(this.frmPersona, this.ID,"idPers");
            }

        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                var provinciaList = ProvinciaLista.GetProvinciaLista();
                stoProvincia.DataSource = provinciaList;
                stoProvincia.DataBind();
                stoNacionalidad.DataSource = ItemLista.GetItemListaCodigo(Valores.Catalogo_Cod_Nacionalidad, "S");
                stoNacionalidad.DataBind();
               
                if (this.frmPersona.Title.IndexOf("Datos de Delegado")!=-1)
                {
                    this.hddDelePlus.SetValue("true");
                    this.btnClearId.Show();
                    this.btnCheckId.Show();
                    EnableWuc(true);
                }
                else
                {
                    this.hddDelePlus.SetValue("null");
                    this.btnClearId.Hide();
                    this.btnCheckId.Hide();
                    EnableWuc(false);
                }
            }
        }

        private void EnableWuc( Boolean valEnable)
        {
            if (valEnable)
            {
                this.txtNombre.Disable();
                this.txtApellido.Disable();
                this.txtEmail.Disable();
                this.cbxNacionalidad.Disable();
                this.txtDire.Disable();
                this.cbbProvincia.Disable();
                this.cbbCanton.Disable();
                this.cbbParroquia.Disable();
            }
            else
            {
                this.txtNombre.Enable();
                this.txtApellido.Enable();
                this.txtEmail.Enable();
                this.cbxNacionalidad.Enable();
                this.txtDire.Enable();
                this.cbbProvincia.Enable();
                this.cbbCanton.Enable();
                this.cbbParroquia.Enable();

            }
        }
        protected void CheckId(object sender, DirectEventArgs e)
        {
            try
            {

                PersonaCriteria criteria = PersonaCriteria.NewPersonaCriteria();
                criteria.Cedula = e.ExtraParams["txtId"];
                Persona objPersona = Persona.GetEditableRoot(criteria);
                if (objPersona.Identificacion != "")
                {
                    this.txtNombre.Text = objPersona.Nombre;
                    this.txtApellido.Text = objPersona.Apellido;
                    this.txtEmail.Text = objPersona.Email;
                    this.txtDire.Text = objPersona.Direccion;
                    Parroquia objParroquiaDelegado = Parroquia.GetEditableRoot(Guid.Parse(objPersona.ParroquiaId));
                    X.Js.Call("AppUser.Persona.SetLocalidad", "wuc_delegado", objParroquiaDelegado.ProvinciaId, objParroquiaDelegado.CantonId, objParroquiaDelegado.Id, objPersona.Nacionalidad, true);
                    this.btnCheckId.Disable();
                    this.txtIdentifi.ReadOnly = true;
                    EnableWuc(true);
                    this.hddDelePlus.SetValue("true");
                }
                else
                {
                    this.hddDelePlus.SetValue("null");
                    this.btnCheckId.Enable();
                    this.txtIdentifi.ReadOnly = false;
                    EnableWuc(false);
                }


            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }

        /// <summary>
        /// Evento seleccion provincia
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void cbbProvincia_Select(object sender, DirectEventArgs e)
        {
            try
            {
                var cantonList = CantonLista.GetCantonLista(e.ExtraParams["Id"]);
                cbbCanton.Reset();
                cbbParroquia.Reset();
                stoParroquia.RemoveAll();
                stoCanton.DataSource = cantonList;
                stoCanton.DataBind();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }    
        /// <summary>
        /// Evento seleccion canton
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void cbbCanton_Select(object sender, DirectEventArgs e)
        {
            try
            {
             
                var parroquiaList = ParroquiaLista.GetParroquiaLista(e.ExtraParams["Id"]);
                cbbParroquia.Reset();
                stoParroquia.DataSource = parroquiaList;
                stoParroquia.DataBind();
            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
       
        /// <summary>
        /// Obtener Listado de Canton y parroquia
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="IdParroquia"></param>
        /// <returns></returns>
        [DirectMethod(ShowMask = true)]
        public ListLocalidad GetCanton(string Id, string IdParroquia)
        {
            ListLocalidad valReturn = new ListLocalidad();
         try
         {
            valReturn.ListCanton=CantonLista.GetCantonLista(Id);
            valReturn.ListParroq=ParroquiaLista.GetParroquiaLista(IdParroquia);
         
           
            this.cbbCanton.Reset();
            this.cbbParroquia.Reset();
            this.stoParroquia.RemoveAll();
        
           
            this.cbbParroquia.Reset();
         }
         catch (Exception ex)
         {
             RegistrarLog(ex);
         }
         
            return (valReturn);

        }
        /// <summary>
        /// Validacion de correo electronico
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void CheckEmail(object sender, RemoteValidationEventArgs e)
        {
            try
            {
                //TextField field = (TextField)sender;
                string txtVal = e.Value.ToString();//field.Text
                Boolean bReturn = false;

                if (this.hddDelePlus.Text == "null")
                {
                    if (txtVal != "")
                    {
                        int qty = Persona.VerificarEmail(txtVal, PersonaIdTmp);

                        if (qty == 0)
                        {
                            bReturn = true;
                        }
                    }
                }
                else
                {

                    Boolean.TryParse(this.hddDelePlus.Text, out bReturn);
                }
                e.Success = bReturn;
                if (bReturn == false)
                    e.ErrorMessage = "'Correo Similar' Modifique correo";
                else
                    e.ErrorMessage = "";
                System.Threading.Thread.Sleep(1000);

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
        /// <summary>
        /// Validacion de cedula
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void CheckIdentificacion(object sender, RemoteValidationEventArgs e)
        {
            try
            {

                //TextField field = (TextField)sender;
                Boolean bReturn = false;
                string txtVal = e.Value.ToString();//field.Text
                if (this.hddDelePlus.Text == "null")
                {
                    if (txtVal != "")
                    {
                        string valRuc = "";
                        if (Session["RUCPROMOTOR"] != null)
                        {
                            valRuc = Session["RUCPROMOTOR"].ToString();
                        }

                        bReturn = Persona.VerificarIdentificacion(txtVal, PersonaIdTmp, valRuc);
                    }
                    else
                    {
                        
                        bReturn = true;
                    }
                }
                else
                {

                    Boolean.TryParse(this.hddDelePlus.Text, out bReturn);
                }
                e.Success = bReturn;
                if (bReturn == false)
                    e.ErrorMessage = "'Persona Similar' Modifique identificación";
                else
                    e.ErrorMessage = "";
                System.Threading.Thread.Sleep(1000);

            }
            catch (Exception ex)
            {
                RegistrarLog(ex);
            }
        }
    }

    public class ListLocalidad 
    {
       public CantonLista ListCanton;
       public ParroquiaLista ListParroq;    
    }
}